home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / cppmatrx.zip / MATRIX.WRK < prev    next >
Text File  |  1991-02-01  |  2KB  |  100 lines

  1. #include <iostream.h>
  2.  
  3.  
  4. class matrix {
  5.       int *matrix_data;
  6.       size_t matrix_size;
  7.  
  8.       public:
  9.          matrix (size_t matrix_length);
  10.          ~matrix (void);
  11.  
  12.          int get_elem (size_t row, size_t column);
  13.          int put_elem (size_t row, size_t column, int elem);
  14.          int& operator[] (size_t row);
  15.  
  16.          void print_matrix (void);
  17.    };
  18.  
  19. matrix::matrix (size_t matrix_length)
  20. {
  21.    matrix_size = matrix_length;
  22.    matrix_data = new int [matrix_size];
  23.  
  24.    int *i;
  25.    size_t count;
  26.  
  27.  
  28.    for (i = matrix_data, count = 1; count <= matrix_size*matrix_size; i++, count++)
  29.       *i = 0;
  30.  
  31.    cout << "\nCreated object Matrix\n";
  32. }
  33.  
  34. matrix::~matrix (void)
  35. {
  36.    delete matrix_data;
  37.  
  38.    cout << "\nDeleted object Matrix\n";
  39. }
  40.  
  41. int matrix::get_elem (size_t row, size_t column)
  42. {
  43.    return *(matrix_data + (row-1)*matrix_size + (column-1));
  44. }
  45.  
  46. int matrix::put_elem (size_t row, size_t column, int elem)
  47. {
  48.    return (*(matrix_data + (row-1)*matrix_size + (column-1)) = elem);
  49. }
  50.  
  51. void matrix::print_matrix (void)
  52. {
  53.    int *i;
  54.    size_t row_count, column_count;
  55.  
  56.    cout << '\n';
  57.  
  58.    for (i = matrix_data, row_count = 0, column_count = 0; row_count < matrix_size; i++)   {
  59.          cout << *i;
  60.          if (column_count == (matrix_size - 1)) {
  61.                column_count = 0;
  62.                row_count++;
  63.                cout << '\n';
  64.             }
  65.                else
  66.                   column_count++;
  67.       }
  68. }
  69.  
  70. int& matrix::operator[] (size_t row)
  71. {
  72.    // return a reference to the first element in a given row
  73.  
  74.    return *(matrix_data + (row-1)*matrix_size);
  75. }
  76.  
  77.  
  78. main (void)
  79. {
  80.    matrix matrix_test (8);
  81.    int my_elem;
  82.  
  83.    matrix_test.print_matrix ();
  84.    matrix_test.put_elem (1,1,8);
  85.    my_elem = matrix_test.get_elem (1,1);
  86.    cout << '\n' << my_elem << '\n';
  87.    cout << "\n-----------------\n";
  88.    matrix_test [2] = 16;
  89.    matrix_test.print_matrix ();
  90.  
  91.    cout << "\n-----------------\n";
  92.  
  93.    cout << matrix_test [1];
  94.  
  95.  
  96.    return 0;
  97. }
  98.  
  99.  
  100.